import Coneccion as cn

class EntidadDB(cn.Coneccion):
    def __init__(self):
        cn.Coneccion.__init__(self)

    	self.__id=None                  #todas las entidades tendran su correspondiente identificador.
        self.__descripcion=None         #todas las entidades tendran que especificar un campo que las describa. 
                                        #pueden ser varios campos separados por coma. 
        self.__busqdescripcion=None     #este campo se utilizara para la busqueda simple, 
                                        #ya que vamos a hacer select ----- from --- where 
                                        #este campo like lo que me llegue como parametro
        self.__busqdescripcionNum=None  #este campo se utilizara para la busqueda simple, 
                                        #ya que vamos a hacer select ----- from --- where 
                                        #este campo = lo que me llegue como parametro
                                        #idem al anterior pero para busquedas por campos numericos
        self.__tabla=None               #Todas las entidades tendran una tabla de cabecera en la base de datos. 
                                        #Ver como se puede establecer para los casos en que haya herencias 
                                        #como por ejemplo en el caso de los comprobantes.
        self.__bajalogica=None          #valor booleano que indica si la entidad soporta o no baja logica.
                                        #me parece que se podria reemplazar por el caso de abajo.
        self.__BL=None                  #campo que utilizo para establecer el nombre del campo que representa 
                                        #la baja logica.

#Region "Atributos"
    @apply
    def campoid():
    	def fget(self):
    		return self.__id 
    	def fset(self):
    		self.__id = campoid
    	return property(**locals())

    @apply
    def camposdescripcion():
    	def fget(self):
    		return self.__descripcion 
    	def fset(self):
    		self.__descripcion = camposdescripcion
    	return property(**locals())

    @apply
    def campoBajaLogica():
        def fget(self):
            return self.__bajalogica 
        def fset(self):
            self.__bajalogica = campoBajaLogica
        return property(**locals())

    @apply
    def campoBusqDescripcion():
    	def fget(self):
    		return self.__busqdescripcion 
    	def fset(self):
    		self.__busqdescripcion = campoBusqDescripcion
    	return property(**locals())

    @apply
    def campoBusqDescripcionNum():
        def fget(self):
            return self.__busqdescripcionNum 
        def fset(self):
            self.__busqdescripcionNum = campoBusqDescripcionNum
        return property(**locals())

    @apply
    def nombretabla():
        def fget(self):
            return self.__tabla 
        def fset(self):
            self.__tabla = nombretabla
        return property(**locals())
#Fin de la region de los atributos.

    def buscarPorId(self, valorId):
        """
            Recibe como parametro el valor del Id de la entidad y retorna true 
            or false teniendo en cuenta si la operacion fue exitosa o no.
        """
        campos = self.campoid + "," + self.camposdescripcion
        strsql = "SELECT " + campos + " FROM " + self.nombretabla + " WHERE " + self.campoid + " = %s" % (valorId)
        exito = cn.Coneccion.EjecutarConsulta(self, strsql)
        return exito 
